package br.unifor.sistemas_operacionais;

import java.util.ArrayList;

import br.unifor.sistemas_operacionais.view.Processo;

public class Escalonador {
	
	private int algoritmo;
	private int numeroDeCores;
	private int numeroDeProcessos;
	private int quantum;
	private Algoritmos algoritmos;
	//
	ArrayList<Processo> filaDeProcessosProntos;
	ArrayList<Processo> filaDeProcessosExecucao;
	ArrayList<Processo> filaDeProcessosEspera;
	
	public void iniciarEscalonamento() {
		algoritmos.aplicarAlgoritmo(algoritmo);
		
		
	}
	
	public void addProcesso() {
		
	}
	
	public void pausarEscalonamento() {
		
	}
	
	public void zerarEscalonamento() {
		
	}
	
	public void aumentarVelocidadeEscalonamento() {
		
	}
	
	public void diminuirVelocidadeEscalonamento() {
		
	}
	
	// Gets e Sets
	
	
	

	/**
	 * @return the algoritmo
	 */
	public int getAlgoritmo() {
		return algoritmo;
	}
	
	/**
	 * @param algoritmo the algoritmo to set
	 */
	public void setAlgoritmo(int algoritmo) {
		this.algoritmo = algoritmo;
	}
	
	/**
	 * @return the numeroDeCores
	 */
	public int getNumeroDeCores() {
		return numeroDeCores;
	}

	/**
	 * @param numeroDeCores the numeroDeCores to set
	 */
	public void setNumeroDeCores(int numeroDeCores) {
		this.numeroDeCores = numeroDeCores;
	}

	/**
	 * @return the numeroDeProcessos
	 */
	public int getNumeroDeProcessos() {
		return numeroDeProcessos;
	}

	/**
	 * @param numeroDeProcessos the numeroDeProcessos to set
	 */
	public void setNumeroDeProcessos(int numeroDeProcessos) {
		this.numeroDeProcessos = numeroDeProcessos;
	}

	/**
	 * @return the quantum
	 */
	public int getQuantum() {
		return quantum;
	}

	/**
	 * @param quantum the quantum to set
	 */
	public void setQuantum(int quantum) {
		this.quantum = quantum;
	}
	
	/**
	 * @return the algoritmos
	 */
	public Algoritmos getAlgoritmos() {
		return algoritmos;
	}
	
	/**
	 * @param algoritmos the algoritmos to set
	 */
	public void setAlgoritmos(Algoritmos algoritmos) {
		this.algoritmos = algoritmos;
	}
	
	// Estruturas
	
	/**
	 * @return the filaDeProcessosProntos
	 */
	public ArrayList<Processo> getFilaDeProcessosProntos() {
		return filaDeProcessosProntos;
	}
	
	/**
	 * @param filaDeProcessosProntos the filaDeProcessosProntos to set
	 */
	public void setFilaDeProcessosProntos(ArrayList<Processo> filaDeProcessosProntos) {
		this.filaDeProcessosProntos = filaDeProcessosProntos;
	}
	
	/**
	 * @return the filaDeProcessosExecucao
	 */
	public ArrayList<Processo> getFilaDeProcessosExecucao() {
		return filaDeProcessosExecucao;
	}
	
	/**
	 * @param filaDeProcessosExecucao the filaDeProcessosExecucao to set
	 */
	public void setFilaDeProcessosExecucao(
			ArrayList<Processo> filaDeProcessosExecucao) {
		this.filaDeProcessosExecucao = filaDeProcessosExecucao;
	}
	
	/**
	 * @return the filaDeProcessosEspera
	 */
	public ArrayList<Processo> getFilaDeProcessosEspera() {
		return filaDeProcessosEspera;
	}
	
	/**
	 * @param filaDeProcessosEspera the filaDeProcessosEspera to set
	 */
	public void setFilaDeProcessosEspera(ArrayList<Processo> filaDeProcessosEspera) {
		this.filaDeProcessosEspera = filaDeProcessosEspera;
	}
}
